
package bitclub;

/**
 * @author José Manuel Domínguez Carvajal
 * @fecha 13/09/2011
 * @version 1.0
 */

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.PPelicula;

public class Pelicula extends Articulo {
    
    private String interpretes;
    private String nacionalidad;
    private int duracion;
    private String formato;

    public Pelicula(int id, String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible, String interpretes, String nacionalidad, int duracion, String formato) {
        super(id, titulo, genero, ano, clasificacionEdad, activo, fechaAlta, fechaBaja, proveedor, tarifa, vecesAlquilada, disponible);
        this.interpretes = interpretes;
        this.nacionalidad = nacionalidad;
        this.duracion = duracion;
        this.formato = formato;
    }

    public Pelicula(String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible, String interpretes, String nacionalidad, int duracion, String formato) {
        this(-1, titulo, genero, ano, clasificacionEdad, activo, fechaAlta, fechaBaja, proveedor, tarifa, vecesAlquilada,disponible,interpretes,nacionalidad,duracion,formato);
    }

    public Pelicula() {
        super();
    }

    
    public int getDuracion() {
        return duracion;
    }

    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }

    public String getFormato() {
        return formato;
    }

    public void setFormato(String formato) {
        this.formato = formato;
    }

    public String getInterpretes() {
        return interpretes;
    }

    public void setInterpretes(String interpretes) {
        this.interpretes = interpretes;
    }

    public String getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    @Override
    public String toString() {
        
        // Presentación de resultados booleanos true and false mejorado
        String respuesta = "";
        
        
        if (this.isDisponible() == true) respuesta = "DISPONIBLE";
        if (this.isDisponible() == false) respuesta = "NO DISPONIBLE";
        
        // En esta variable vamos a concatenar todos los atributos de nuestro Videojuego
        String resultado = "";
        
        resultado += "----- ----- ----- ----- ----- ----- ----- ----- ----- ----- \n";                
        resultado += "           TITULO: " + this.getTitulo() + "\n\n"; 
        
        if (this.getId() != -1) {
           resultado += "ID: " + this.getId() + "\n";           
        }
                
        resultado += "Genero: " + this.getGenero() + "\n";
        resultado += "Año: " + this.getAno() + "\n";
        resultado += "Nacionalidad: " + this.getNacionalidad() + "\n";
        resultado += "Duración: " + this.getDuracion() + "\n";
        resultado += "Interpretes: " + this.getInterpretes() + "\n";
        resultado += "Formato: " + this.getFormato() + "\n";
        resultado += "Clasificación: " + this.getClasificacionEdad() + "\n";
        resultado += "Tarifa: " + this.getTarifa() + "\n";
        
        Proveedor p = this.getProveedor();
        resultado += "Proveedor: " + p.getNombre() + " " + p.getApellidos() + " " + p.getNombredeEmpresa() + "\n";
        
        resultado += "Fecha Alta: " + BitUtil.muestraFecha(this.getFechaAlta()) + "\n";
        
        if (this.isActivo() == false) {
            resultado += "Fecha Baja: " + BitUtil.muestraFecha(this.getFechaBaja()) + "\n";
        }        
        
        resultado += "¿ Esta Disponible ?: " + respuesta + "\n";                
        resultado += "Número Veces Alquilada: " + this.getVecesAlquilada() + "\n";
        
        return resultado;
        
    }

    
    /**
     * Crea un nuevo registro en BD con el objeto Articulo que lo usa
     */
    
    @Override
    public void nuevo() {
        PPelicula.nuevoBD(this);
    }
    
    /**
     * Actualiza los datos en la base de datos del objeto que lo usa
     */
    @Override
    public void actualizar() {
        PPelicula.actualizarBD(this);
    }

    
    public static List<Pelicula> seleccionarPorMasAlquilados(){
        List<Pelicula> listPelicula = new ArrayList ();
        //Pedimos los artículos más alquilados a la capa de persistencia
        listPelicula=PPelicula.seleccionarPorMasAlquiladosBD();
        return listPelicula;
    }
    
    public static List<Pelicula> seleccionarPorMenosAlquilados(){
        List<Pelicula> listPelicula = new ArrayList ();
        //Pedimos los artículos más alquilados a la capa de persistencia
        listPelicula=PPelicula.seleccionarPorMenosAlquiladosBD();
        return listPelicula;
    }
    
    public static Pelicula seleccionarPorCodigo(int codigo){
       Pelicula pelicula;
       //Pedimos la película que tenga el código solicitado
       pelicula =PPelicula.seleccionarPorCodigoBD(codigo);
       return pelicula;
    }
    
    public static List<Pelicula> seleccionarPorTitulo(String titulo){
       List<Pelicula> listPelicula=new ArrayList();
      //Pedimos los artículos que tengan cierta palabra en el título
      listPelicula = PPelicula.seleccionarPorTituloBD(titulo);
      return listPelicula;
    }
    
    public static List<Pelicula> seleccionarPorGenero(String genero){
       List<Pelicula> listPelicula=new ArrayList();
       //Pedimos los artículos que pertenezcan a cierto género
       listPelicula = PPelicula.seleccionarPorGeneroBD(genero); 
      return listPelicula;
    }
    
    public static List<Pelicula> seleccionarPorAno(int ano){
       List<Pelicula> listPelicula=new ArrayList();
       //Pedimos los artículos que pertenezcan a cierto año
       listPelicula = PPelicula.seleccionarPorAnoBD(ano); 
      return listPelicula;
    }
    
    
}
